#!/usr/bin/python
#coding=utf-8
'''
Studia i conteggi di luce e buio per diversi voltaggi del PMT
'''
from __future__ import division, print_function
from ROOT import TCanvas, TGraphErrors, TTree, TFile, TMultiGraph
from myanalisis import set_my_style, my_double

'''
Definizione dei parametri e inizializzazione degli oggetti
'''
path_graph = 'report/graph/voltPMT/'
data_file = TFile('data/voltPMT/volt_luce_buio.root')
tree = data_file.Get('volt_luce_buio')

'''
Creazione dei grafici:
    1. luce e conteggi di buio per i diversi voltaggi
    2. rapporto segnale rumore per i diversi voltaggi
'''
set_my_style('e')
multi_graph = TMultiGraph('multi_graph', 'multi_graph')
multi_graph.SetTitle(';Volt applicati al PMT [V];Frequenza di Conteggio [Hz]')
graph_luce = TGraphErrors()
graph_buio = TGraphErrors()
graph_ratio = TGraphErrors()
graph_ratio.SetTitle(';Volt applicati al PMT [V];Rapporto segnale / rumore')
graph_luce.SetMarkerColor(2)
graph_buio.SetMarkerColor(4)
multi_graph.Add(graph_luce)
multi_graph.Add(graph_buio)
for entry in tree:
    i = graph_luce.GetN()
    graph_luce.SetPoint(i, entry.volt, max(entry.luce/10, 0.01))
    graph_luce.SetPointError(i, 0, entry.luce**.5/10)
    graph_buio.SetPoint(i, entry.volt, max(entry.buio/10, 0.01))
    graph_buio.SetPointError(i, 0, entry.buio**.5/10)
    if entry.luce != 0:
        graph_ratio.SetPoint(i, entry.volt, entry.buio/entry.luce)
        ratio_err = ((entry.buio**.5/entry.luce)**2 + (entry.buio/entry.luce**1.5)**2)**.5
        graph_ratio.SetPointError(i, 0, ratio_err)

canvas_luce_buio = TCanvas('canvas_luce_buio', 'canvas_luce_buio', 2)
canvas_luce_buio.SetLogy()
multi_graph.SetMinimum(0.01)
multi_graph.Draw('ap')
canvas_luce_buio.SaveAs(path_graph + 'conteggi_luce_buio.pdf')
canvas_ratio = TCanvas('canvas_ratio', 'canvas_ratio', 2)
graph_ratio.Draw('ap')
canvas_ratio.SaveAs(path_graph + 'rapporto_segnale_rumore.pdf')
